
// 9. 回文数
// https://leetcode.cn/problems/palindrome-number/description/

// 给你一个整数 x ，如果 x 是一个回文整数，返回 true ；否则，返回 false 。

// 回文数是指正序（从左向右）和倒序（从右向左）读都是一样的整数。

//     例如，121 是回文，而 123 不是。

 

// 示例 1：

// 输入：x = 121
// 输出：true

// 示例 2：

// 输入：x = -121
// 输出：false
// 解释：从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

// 示例 3：

// 输入：x = 10
// 输出：false
// 解释：从右向左读, 为 01 。因此它不是一个回文数。

 

// 提示：

//     -231 <= x <= 231 - 1

 

// 进阶：你能不将整数转为字符串来解决这个问题吗？



class Solution {
public:
    bool isPalindrome(int x) {
        if(x < 0) return false;
        int num = x;
        stack<int> st;
        while(num)
        {
            st.push(num % 10);
            num /= 10;
        }

        while(x)
        {
            if((x % 10) != st.top()) return false;

            st.pop();
            x /= 10;
        }

        return true;
    }
};


// class Solution {
// public:
//     bool isPalindrome(int x) {
//         if(x < 0) return false;
//         string num;
//         while(x)
//         {
//             num += '0' + (x % 10);
//             x /= 10;
//         }

//         string::iterator start = num.begin();
//         string::iterator dest = num.end() - 1;
//         while(start < dest)
//         {
//             if(*start != *dest)
//                 return false;
            
//             ++start;
//             --dest;
//         }

//         return true;
//     }
// };